Bahnschaltpunkte 2: Beispiel Klebeprozess
Das hier beschrieben Beispielprojekt Robotics_Trigger_Advanced.project
finden Sie im Installationsverzeichnis von CODESYS unter ..\CODESYS SoftMotion\Examples
.
Mithilfe von Bahnschaltpunkten kann man an bestimmten Positionen auf der Bahn Aktionen ausführen, wie beispielsweise das Ein- und Ausschalten einer Klebstoffdüse.
Dieses Beispiel umfasst die folgenden Bestandteile:
Die Konfiguration einer garantierten Vorausschau der Trajektorie durch den Parameter
fPlanningForecastDuration
des BausteinsSMC_TuneCPKernel
.Das Kommandieren verschiedener Bahnschaltpunkte. Dabei werden alle drei verfügbaren Methoden zur Definition der Bahnposition verwendet (siehe SMC_TriggerPositionType).
Die Verwendung von Bahnschaltpunkten mit Zeitverzögerung. Die Beispielapplikation enthält den Baustein
TriggerWithTimeShift
, bei dem zeitverzögert (früher und später) auf das Erreichen einer Bahnposition reagiert werden kann.
Diese Bestandteile werden anhand einer Beispielapplikation für einen Klebeprozess gezeigt. Dabei wird die im nachfolgenden Bild in rot dargestellte Bewegung ausgeführt (mit Überschleifen).

An den grün markierten Positionen sind Bahnschaltpunkte definiert worden:
Position 1: Einschalten der Klebeeinrichtung 0.05 s vor Erreichen der Position.
Position 1: Einschalten der UV-Lampe beim Erreichen der Position.
Position 2: Befüllung des Kleber-Vorratsbehälters beim Erreichen der Position.
Position 3: Ausschalten der Klebeeinrichtung und Beenden der Befüllung des Kleber-Vorratsbehälters 0.05 s vor Erreichen der Position.
Position 3: Ausschalten der UV-Lampe 1.5 s nach Erreichen der Position
Struktur der Applikation
Die Applikation besteht aus den folgenden Teilen:
GlueApplication
: In diesem Programm ist die Beispielapplikation enthalten, die die Verwendung von Bahnschaltpunkten anhand eines Klebevorgangs zeigt.Planning_PRG
: In diesem Programm wird eine Vorausschau der Trajektorie konfiguriert.TriggerWithTimeShift
: Dieser Baustein enthält die Logik für zeitverzögerte Bahnschaltpunkte und wird im BeispielprogrammGlueApplication
verwendet.Trace
: Der Trace zeigt der Dynamik der Achsen und zusätzlich die durch Bahnschaltpunkte geschalteten Ausgänge vom ProgrammGlueApplication
.
Konfiguration einer Vorausschau
Wenn frühzeitig vor Erreichen eines Bahnschaltpunkts reagiert werden soll, beispielsweise 0.05 s vor Erreichen einer Position, dann muss der Parameter fPlanningForecastDuration
des Bausteins SMC_TuneCPKernel
auf mindestens 0.05s eingestellt werden. Da der Parameter direkte Auswirkung auf die Latenz hat, sollte sein Wert nicht größer als nötig sein (siehe die Dokumentation von fPlanningForecastDuration). Bitte beachten Sie, dass SMC_TuneCPKernel
in derSoftMotion-Planungstask aufgerufen werden muss. Deswegen wird die Konfiguration nicht im Hauptprogramm GlueApplication
, sondern im Programm Planning_PRG
ausgeführt.
In dieser Beispielapplikation wird die Auswertung des Bahnschaltpunkts frühestens 0.05 s vor Erreichen einer Position benötigt. Deswegen wird im Programm Planning_PRG
der Parameter fPlanningForecastDuration
=0.05 gesetzt.
Baustein TriggerWithTimeShift
Der Baustein TriggerWithTimeShift
bietet eine vereinfachte Schnittstelle für die Verwendung von Bahnschaltpunkten. Zusätzlich kann eine Zeitverzögerung definiert werden, sodass der Bahnschaltpunkt vor einer Position (positiver Wert) als auch nach einer Position (negativer Wert) auslösen kann. Je nachdem, welche zeitlichen Genauigkeiten in einer Applikation benötigt werden, kann folgendermaßen auf das Erreichen eines Bahnschaltpunkts reagiert werden:
Benötigte zeitliche Genauigkeit >= Bustaskzyklus: In diesem Fall kann der Ausgang
TriggerWithTimeShift.TriggerReachedThisCycle
verwendet werden.Benötigte zeitliche Genauigkeit < Bustaskzyklus: In diesem Fall kann die genaue Restzeit
TriggerWithTimeShift.TriggerTime
bis zum Auslösen des Bahnschaltpunktes verwendet werden.
Intern verwendet TriggerWithTimeShift
die Bausteine SMC_GroupPrepareTrigger
und SMC_GroupReadTrigger
.
Kommandierung von Bahnschaltpunkten
Im Programm GlueApplication
werden die Bewegungen und Bahnschaltpunkte kommandiert. Die Aufrufreihenfolge ist bei Bahnschaltpunkten von besonderer Bedeutung, da die über SMC_GroupPrepareTrigger
vorbereiteten Bahnschaltpunkte der nächsten im selben Zyklus kommandierten Bewegung zugewiesen werden. Deswegen muss in jeder Applikation auf zwei Punkte geachtet werden:
Aufruf der Bausteine zum Kommandieren von Bahnschaltpunkten immer vor den Bewegungs-Bausteinen.
Kommandieren von Bahnschaltpunkten und der dazugehörigen Bewegung immer im gleichen Zyklus.
Die Bahnschaltpunkte verwenden alle Typen von SMC_TriggerPositionType
:
Die Bahnschaltpunkte an Position 1 verwenden die Definition einer relativen Distanz (
SMC_TriggerPositionType.MvtRelative
) und als Position 0.5. Da die zugehörige Bewegung eine Distanz von 10 hat, liegen die Bahnschaltpunkte bei X=5.Der Bahnschaltpunkt an Position 2 verwendet die Definition einer Distanz in Benutzereinheiten u (
SMC_TriggerPositionType.MvtDistance
) und als Position 5. Dadurch liegt der Bahnschaltpunkt auch bei X=5.Die Bahnschaltpunkte an Position 3 verwenden den Schnittpunkt mit einer Ebene (
SMC_TriggerPositionType.PlaneIntersection
). Die Ebene wurde so definiert, dass die Bahnschaltpunkte bei X=5 liegen.
GlueApplication
verfügt über die Ausgänge EnableGlue
, EnableUVLamp
und RefillGlueStorage
. Diese werden bei den passenden Bahnschaltpunkten in GlueApplication.EvaluateTriggers()
geschaltet. Die Bewegung und der Zustand dieser Ausgänge kann im Trace überwacht und ausgewertet werden.